package com.atguigu.exer;

import com.atguigu.util.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Scanner;

/**
 * 课后练习一
 *
 * @author admin
 */
public class ExerTest1 {

    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名：");
        String name = scanner.next();
        System.out.println("请输入邮箱：");
        String email = scanner.next();
        System.out.println("请输入生日：");
        String birth = scanner.next();

        String sql = "insert into customers(name, email, birth) value (?, ?, ?)";
        int insertCount = update(sql, name, email, birth);
        if (insertCount > 0) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }
    }

    /**
     * 通用的增删改操作
     * sql 中占位符的个数与可变形参的长度相同！
     */
    public static int update(String sql, Object... args) throws Exception {

        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            // 1.获取数据库连接
            connection = JDBCUtils.getConnection();

            // 2.预编译 sql 语句，返回 PreparedStatement 实例对象
            preparedStatement = connection.prepareStatement(sql);

            // 3.填充占位符  小心参数声明错误！！！
            for (int i = 0; i < args.length; i++) {
                preparedStatement.setObject(i + 1, args[i]);
            }

            /**
             * 4.执行
             * preparedStatement.execute()
             * 如果执行的是查询操作，有返回结果，则此方法返回 true
             * 如果执行的是增、删、改操作，没有返回结果，则此方法返回 false
             */
            return preparedStatement.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5.资源的关闭
            JDBCUtils.closeResource(connection, preparedStatement);
        }

        return 0;

    }
}
